'use strict';
var vk; // 全局vk实例
// 涉及的表名
const dbName = {
	//test: "vk-test", // 测试表
};

var db = uniCloud.database(); // 全局数据库引用
var _ = db.command; // 数据库操作符
var $ = _.aggregate; // 聚合查询操作符
/**
 * 权限注意：访问以下链接查看
 * 文档地址：https://vkdoc.fsq.pub/client/uniCloud/cloudfunctions/cloudObject.html#内置权限
 */
var cloudObject = {
	isCloudObject: true, // 标记为云对象模式
	/**
	 * 请求前处理，主要用于调用方法之前进行预处理，一般用于拦截器、统一的身份验证、参数校验、定义全局对象等。
	 * 文档地址：https://vkdoc.fsq.pub/client/uniCloud/cloudfunctions/cloudObject.html#before-预处理
	 */
	_before: async function() {
		vk = this.vk; // 将vk定义为全局对象
		// let { customUtil, uniID, config, pubFun } = this.getUtil(); // 获取工具包
	},
	/**
	 * 请求后处理，主要用于处理本次调用方法的返回结果或者抛出的错误
	 * 文档地址：https://vkdoc.fsq.pub/client/uniCloud/cloudfunctions/cloudObject.html#after-后处理
	 */
	_after: async function(options) {
		let { err, res } = options;
		if (err) {
			return; // 如果方法抛出错误，直接return;不处理
		}
		return res;
	},
	/**
	 * 获取列表
	 * @url client/gsxy/xybx/pub/xybxapi.getvkGlobalData 前端调用的url参数地址
	 */
	getvkGlobalData: async function(data) {
		let res = { code: 0, msg: '' };
		let { uid } = this.getClientInfo(); // 获取客户端信息
		// 业务逻辑开始-----------------------------------------------------------
			//vk-global-data
			res.info = await vk.baseDao.findById({
			  dbName:"vk-global-data",
			  id:"648c053928064a40109cd9a3"
			});
		// 业务逻辑结束-----------------------------------------------------------
		return res;
	},
	/**
	 * 获取列表
	 * @url client/gsxy/xybx/pub/xybxapi.getxybxgdlist 前端调用的url参数地址
	 */
	getxybxgdlist: async function(data) {
		let res = { code: 0, msg: '' };

		res.num1 = await vk.baseDao.count({
		  dbName:"gsxy-xybx-gd",// 表名
		  whereJson:{ // 条件
			openid:data.openid,
		    gdzt:'1'
		  }
		});
		res.num2 = await vk.baseDao.count({
		  dbName:"gsxy-xybx-gd",// 表名
		  whereJson:{ // 条件
			openid:data.openid,
		     gdzt:'2'
		  }
		});
		res.num3 = await vk.baseDao.count({
		  dbName:"gsxy-xybx-gd",// 表名
		  whereJson:{ // 条件
		     openid:data.openid,
			 gdzt:'3'
		  }
		});
		res.num4 = await vk.baseDao.count({
		  dbName:"gsxy-xybx-gd",// 表名
		  whereJson:{ // 条件
		     openid:data.openid,
			 gdzt:'4'
		  }
		});

		res.list = await vk.baseDao.select({
		  dbName:"gsxy-xybx-gd", // 表名
		  getCount:false, // 是否需要同时查询满足条件的记录总数量，默认false
		  getMain:true, // 是否只返回rows数据，默认false
		  pageIndex:1, // 当前第几页
		  pageSize:10, // 每页条数
		  whereJson:{ // 条件
			openid:data.openid,// 金额大于0
			gdzt:data.gdzt
		  },
		  // 代表只显示_id和money字段
		  fieldJson:{
			// _id: true,
			// money: true, 
		  },
		  // 按_id降序 asc 升序 desc 降序 
		  sortArr:[
			{ name:"_add_time", type:"desc" }
		  ],
		});

		// 业务逻辑结束-----------------------------------------------------------
		return res;
	},
	/**
	 * 模板函数
	 * @url client/gsxy/xybx/pub/xybxapi.updateWxryWzListOne2 前端调用的url参数地址
	 */
	updateWxryWzListOne2: async function(data) {
		let { uid, filterResponse, originalParam } = this.getClientInfo(); // 获取客户端信息
		let res = { code: 0, msg: '' };
		// 业务逻辑开始-----------------------------------------------------------
		//console.log("请求参数", data);
		let dbName = "gsxy-xybx-gd";
		let updateId = data._id
		data.gdzt = "4"
		data.pjsj = Date.now()
		Reflect.deleteProperty(data,'_id')
		// 此处应该还需要判断下mobile和username是否已存在等参数校验逻辑和
		//let register_date = new Date().getTime();
		res.newInfo = await vk.baseDao.updateById({
		  dbName:dbName,
		  id:updateId,
		  dataJson:{
		    ...data
		  }
		});
		// 业务逻辑结束-----------------------------------------------------------
		return res;
	},
	/**
	 * 获取列表
	 * @url client/gsxy/xybx/pub/xybxapi.addxybxgd 前端调用的url参数地址
	 */
	addxybxgd: async function(data) {
		let res = { code: 0, msg: '' };
		let { uid } = this.getClientInfo(); // 获取客户端信息
		if(uid){}else{
			res = { code: -1, msg: '请登录' };
			return res
		}
		//发起工单状态
		// 带毫秒
		data.gdh = vk.pubfn.timeFormat(new Date(),"yyyyMMddhhmmssS") + vk.pubfn.random(5);
		data.gdzt = '1';
		data.openid = data.userinfo.openid

		
		// 业务逻辑开始-----------------------------------------------------------
		await vk.baseDao.add({
		  dbName:"gsxy-xybx-gd",// 表名
		  dataJson:{ // 需要新增的数据 json格式
		    ...data
		  }
		});

		let tempsj = vk.pubfn.timeFormat(new Date(),"yyyy-MM-dd hh:mm:ss");
		let tempqk = data.bxld + data.bxxm
		let fffff = tempqk.slice(0,18)
		// 通知后勤处
		
		await vk.openapi.weixin.subscribeMessage.send({
			  touser: 'oXfg75Pm1vyPWLumM75Q7rekV8eY',
			  template_id: "b-hRKqswmA87LYw8-kkWdW-9GqMvYXSb35kik2pD2RQ",
			  data: {
				name1:{
				  value:data.xm
				},
				phrase4:{
				  value:'待处理'
				},
				thing5:{
				  value:data.bxdh
				},
				date3:{
				  value:tempsj
				},
				thing2:{
				  value: fffff
				}
			  }
			});


		// 业务逻辑结束-----------------------------------------------------------
		return res;
	},
	/**
	 * 模板函数
	 * @url client/gsxy/xybx/pub/xybxapi.getGsxyxybxxmglInfoListb 前端调用的url参数地址
	 */
	getGsxyxybxxmglInfoListb: async function(data) {
		let res = { code: 0, msg: '' };
		//console.log("请求参数", data);
		// 业务逻辑开始-----------------------------------------------------------
		const redis = await vk.redis();
		const rddata = await redis.get('gsxy-xybx-xm:treeData');
		if(rddata){
			res.treeData = JSON.parse(rddata)
		}else{
			res.infolist = await vk.baseDao.select({
				  dbName:"gsxy-xybx-xm", // 表名
				  getCount:true, // 是否需要同时查询满足条件的记录总数量，默认false
				  getMain:true,// 是否只返回rows数据，默认false
				  pageIndex:1, // 当前第几页
				  pageSize:-1, // 每页条数
				  whereJson:{}
			});
			let treeProps = {
			  id:"_id",
			  parent_id:"parent_id", 
			  children:"children"
			};
			res.treeData = await vk.pubfn.arrayToTree(res.infolist, treeProps);
			await redis.set('gsxy-xybx-xm:treeData',JSON.stringify(res.treeData), 'EX', 86400*30)
		}
		// 业务逻辑结束-----------------------------------------------------------
		return res;
	},
	/**
	 * 获取列表
	 * @url client/gsxy/xybx/pub/xybxapi.getldlist 前端调用的url参数地址
	 */
	getldlist: async function(data) {
		let res = { code: 0, msg: '' };
		//let { uid } = this.getClientInfo(); // 获取客户端信息
		// 业务逻辑开始-----------------------------------------------------------
		let dataTree = [
			{
				text: "宿舍楼A栋",
				value: "宿舍楼A栋",
				
			},
			{
				text: "宿舍楼B栋",
				value: "宿舍楼B栋",
				
			},
			{
				text: "宿舍楼C栋",
				value: "宿舍楼C栋",
				
			},
			{
				text: "宿舍楼D栋",
				value: "宿舍楼D栋",
				
			},
			{
				text: "宿舍楼E栋",
				value: "宿舍楼E栋",
				
			},
			{
				text: "宿舍楼F栋",
				value: "宿舍楼F栋",
			},
			{
				text: "宿舍楼H栋",
				value: "宿舍楼H栋",
				
			},
			{
				text: "宿舍楼K栋",
				value: "宿舍楼K栋",
				
			},{
				text: "宿舍楼Q栋",
				value: "宿舍楼Q栋",
				
			},{
				text: "宿舍楼M栋",
				value: "宿舍楼M栋",
				
			},{
				text: "明德楼",
				value: "明德楼",
				
			},{
				text: "求新楼",
				value: "求新楼",
				
			},{
				text: "求实楼",
				value: "求实楼",
				
			},{
				text: "实训中心",
				value: "实训中心",
				
			},{
				text: "图书馆",
				value: "图书馆",
				
			}
		];
		res.dataTree = dataTree
		// 业务逻辑结束-----------------------------------------------------------
		return res;
	}
};

module.exports = cloudObject;
